#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import tkinter as tk
import random
from tkinter import messagebox


class TipWindow:
    def __init__(self, root):
        self.root = root
        self.root.withdraw()  # 隐藏主窗口
        self.tips = [
            "请勿长时间使用鼠标，适当休息哦~",
            "注意保持正确坐姿，保护脊椎健康",
            "每隔一小时起身活动，缓解眼部疲劳",
            "多喝温水，保持身体水分充足",
            "记得定时远眺，放松眼部肌肉"
        ]
        self.colors = [
            "#FFC0CB", "#FFA500", "#FFD700",
            "#90EE90", "#87CEFA", "#DDA0DD"
        ]
        self.max_windows = 55  # 最大同时存在的弹窗数量
        self.current_windows = 0  # 当前弹窗计数
        self.start_tip_timer()

    def create_tip_window(self):
        """创建单个提示弹窗，严格限制数量"""
        if self.current_windows >= self.max_windows:
            return  # 超过最大数量则不创建

        # 创建顶级窗口
        tip_window = tk.Toplevel(self.root)
        self.current_windows += 1  # 计数+1

        # 随机位置（基于屏幕尺寸）
        screen_width = self.root.winfo_screenwidth()
        screen_height = self.root.winfo_screenheight()
        window_width = 250
        window_height = 80
        x = random.randint(0, screen_width - window_width)
        y = random.randint(0, screen_height - window_height)
        tip_window.geometry(f"{window_width}x{window_height}+{x}+{y}")

        # 窗口配置
        tip_window.title("温馨提示")
        tip_window.attributes("-topmost", True)  # 置顶显示

        # 随机内容和样式
        tip_text = random.choice(self.tips)
        bg_color = random.choice(self.colors)
        tk.Label(
            tip_window,
            text=tip_text,
            bg=bg_color,
            font=("微软雅黑", 12),
            wraplength=230,  # 自动换行
            padx=10,
            pady=10
        ).pack(fill=tk.BOTH, expand=True)

        # 定义窗口关闭逻辑（统一处理自动关闭和手动关闭）
        def close_window():
            if isinstance(tip_window, tk.Toplevel) and tip_window.winfo_exists():
                tip_window.destroy()
                self.current_windows -= 1  # 无论何种方式关闭，都减少计数
                # 确保计数不会出现负数（极端情况保护）
                if self.current_windows < 0:
                    self.current_windows = 0

        # 绑定手动关闭事件（用户点击X按钮时触发）
        tip_window.protocol("WM_DELETE_WINDOW", close_window)
        # 定时自动关闭（5秒后）
        tip_window.after(4000, close_window)

    def start_tip_timer(self):
        """定时创建弹窗（30-60秒随机间隔）"""
        self.create_tip_window()
        # 随机下次创建时间（30000-60000毫秒）
        next_delay = random.randint(100, 100)
        self.root.after(next_delay, self.start_tip_timer)


if __name__ == '__main__':
    try:
        root = tk.Tk()
        app = TipWindow(root)
        root.mainloop()
    except Exception as e:
        messagebox.showerror("错误", f"程序出错：{str(e)}")